// vim:ts=4:sw=4:noet:nu:tw=80
//
// задача: напечатать числа от 1 до 10, не используя операторов циклов, перехода и жесткого кодирования
//
#include <iostream>

using std::cout;
using std::endl;

template <const int A, const int B>
	struct PrintRange 
{
	static_assert(A<=B,"A<=B");
	static void Print()	
	{
		cout << A << endl;
		PrintRange<A+1, B>::Print();
	}
};

template <const int N>
	struct PrintRange<N, N> 
{
	static void Print()
	{
		cout << N << endl;
	}
};

int main (int, char**)
{
	PrintRange<1, 10>::Print();
	PrintRange<11, 10>::Print();
	return 0;
}
